package org.xandroid.util;

import android.app.Service;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;

/**
 * 网络状态助手类，用来获取是否有可用的网络
 * @author Kross(krossford@foxmail.com)
 * @date 2014-3-27 22:43:08
 * */
public class XNetStateHelper {
	/**
	 * 唯一实例
	 * */
	private static XNetStateHelper instance = null;
	
	/**
	 * 上下文对象
	 * */
	private Context context;
	
	/**
	 * ConnectivityManager
	 * */
	private ConnectivityManager connectivityManager;
	
	/**
	 * 私有的构造函数，初始化需要的组件
	 * @param context 上下文对象
	 * */
	private XNetStateHelper(Context context) {
		this.context = context;
		this.connectivityManager = (ConnectivityManager)this.context.getSystemService(Service.CONNECTIVITY_SERVICE);
	}
	
	/**
	 * 单例，使用这个方法来获取NetHelper的唯一实例
	 * @param context 上下文对象
	 * @return 单例的一个对象
	 * */
	public static XNetStateHelper getInstance(Context context) {
		if (instance == null) {
			instance = new XNetStateHelper(context);
		}
		return instance;
	}
	
	/**
	 * 判断当前是否有可用的网络
	 * @return boolean 有可用网络的时候返回true，否则反之
	 * */
	public boolean haveAvailaleNetwork() {
		NetworkInfo ni = this.connectivityManager.getActiveNetworkInfo();
		if (ni != null) {
			return ni.isAvailable();
		} else {
			return false;
		}
	}
}
